



<!DOCTYPE html>
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  
  <title>Django &mdash; Python Anti-Patterns  documentation</title>
  

  
  

  

  
  
    

  

  
  
    <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
  

  
    <link rel="stylesheet" href="../_static/css/ribbon.css" type="text/css" />
  
    <link rel="stylesheet" href="../_static/css/font-awesome-4.1.0/css/font-awesome.min.css" type="text/css" />
  
    <link rel="stylesheet" href="../_static/css/menu.css" type="text/css" />
  
        <link rel="index" title="Index"
              href="../genindex.html"/>
        <link rel="search" title="Search" href="../search.html"/>
    <link rel="top" title="Python Anti-Patterns  documentation" href="../index.html"/>
        <link rel="next" title="Maintainability" href="all/maintainability/index.html"/>
        <link rel="prev" title="Not using iteritems() to iterate over a large dictionary in Python 2" href="../performance/not_using_iteritems_to_iterate_large_dict.html"/> 

</head>

<body class="wy-body-for-nav" role="document">

  <div class="wy-grid-for-nav">

    
    <nav data-toggle="wy-nav-shift" class="wy-nav-side">
      <div class="wy-side-nav-search">
        <a href="../index.html"> Python Anti-Patterns</a>
        <div role="search">
  <form id ="rtd-search-form" class="wy-form" action="../search.html" method="get">
    <input type="text" name="q" placeholder="Search docs" />
    <input type="hidden" name="check_keywords" value="yes" />
    <input type="hidden" name="area" value="default" />
  </form>
</div>
      </div>


      <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
        
        
            <ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../correctness/index.html"><i class="fa fa-check"></i> Correctness</a></li>
<li class="toctree-l1"><a class="reference internal" href="../maintainability/index.html"><i class="fa fa-puzzle-piece"></i> Maintainability</a></li>
<li class="toctree-l1"><a class="reference internal" href="../readability/index.html"><i class="fa fa-eye"></i> Readability</a></li>
<li class="toctree-l1"><a class="reference internal" href="../security/index.html"><i class="fa fa-lock"></i> Security</a></li>
<li class="toctree-l1"><a class="reference internal" href="../performance/index.html"><i class="fa fa-dashboard"></i> Performance</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#"><i class="fa fa-book"></i> Django</a><ul>
<li class="toctree-l2"><a class="reference internal" href="all/maintainability/index.html"><i class="fa fa-puzzle-piece"></i> Maintainability</a></li>
<li class="toctree-l2"><a class="reference internal" href="all/security/index.html"><i class="fa fa-lock"></i> Security</a></li>
<li class="toctree-l2"><a class="reference internal" href="all/correctness/index.html"><i class="fa fa-check"></i> Correctness</a></li>
<li class="toctree-l2"><a class="reference internal" href="all/performance/index.html"><i class="fa fa-dashboard"></i> Performance</a></li>
<li class="toctree-l2"><a class="reference internal" href="1.8/migration/index.html"><i class="fa fa-magic"></i> Migration to 1.8</a></li>
</ul>
</li>
</ul>

        
      </div>
      &nbsp;

    </nav>

    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">

      
      <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
        <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
        <a href="../index.html">Python Anti-Patterns</a>
      </nav>


      
      <div class="wy-nav-content" id="signup-box" >
        <div class="rst-content">
          <div class="navigation" role="navigation" aria-label="breadcrumbs navigation">
  <ul class="wy-breadcrumbs">
    <li><a href="../index.html">Documentation</a> &raquo;</li>
      
    <li><i class="fa fa-book"></i> Django</li>
      <li class="wy-breadcrumbs-aside">
        
          <a href="../_sources/django/index.rst.txt" rel="nofollow"> View page source</a>
        
      </li>
  </ul>
  <hr/>
</div>

          <div role="main">
            
  <div class="section" id="i-class-fa-fa-book-i-django">
<h1><i class="fa fa-book"></i> Django<a class="headerlink" href="#i-class-fa-fa-book-i-django" title="Permalink to this headline">¶</a></h1>
<p>Django is a great framework to create fast and scalable web applications. To help you write great Django apps from the start, we started to compile a set of anti- and migration patterns. They’ll help you to avoid common mistakes or to migrate to a new version faster. Some patterns are simply (more elaborate) explanations of tips and best practices that can be found in Django’s docs. Others stem from our own experiences. Feel free to contribute your ideas or share your pattern via <a class="reference external" href="mailto:info&#37;&#52;&#48;quantifiedcode&#46;com?subject=New%20pattern&amp;body=Hey%20fellow%20Pythoneer%2C%0A%0Athanks%20for%20suggesting%20a%20new%20pattern&#46;%20To%20help%20us%20understand%20you%20pattern%2C%20please%20send%20us%20the%20following%20information%3A%0A%0ADescription%3A%20what%20is%20the%20pattern%20all%20about%20and%20why%20is%20it%20a%20problem%3F%0AAnti-pattern%3A%20Code%20snippet%20that%20shows%20the%20problem%0ABest-practice%3A%20Code%20snippet%20that%20shows%20the%20solution%20%2F%20best%20practice%0AReferences%20(optional)%3A%20Links%20to%20further%20readings%0A%0AThanks%2C%20%0AAndreas%20and%20Christoph">email</a>.</p>
<div class="toctree-wrapper compound">
<ul>
<li class="toctree-l1"><a class="reference internal" href="all/maintainability/index.html"><i class="fa fa-puzzle-piece"></i> Maintainability</a></li>
<li class="toctree-l1"><a class="reference internal" href="all/security/index.html"><i class="fa fa-lock"></i> Security</a></li>
<li class="toctree-l1"><a class="reference internal" href="all/correctness/index.html"><i class="fa fa-check"></i> Correctness</a></li>
<li class="toctree-l1"><a class="reference internal" href="all/performance/index.html"><i class="fa fa-dashboard"></i> Performance</a></li>
<li class="toctree-l1"><a class="reference internal" href="1.8/migration/index.html"><i class="fa fa-magic"></i> Migration to 1.8</a></li>
</ul>
</div>
</div>


          </div>
          <footer>
  
    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
      
        <a href="all/maintainability/index.html" class="btn btn-neutral float-right" title="Maintainability"/>Next <span class="fa fa-arrow-circle-right"></span></a>
      
      
        <a href="../performance/not_using_iteritems_to_iterate_large_dict.html" class="btn btn-neutral" title="Not using iteritems() to iterate over a large dictionary in Python 2"><span class="fa fa-arrow-circle-left"></span> Previous</a>
      
    </div>
  

  <hr/>

  <div role="contentinfo">
    <p>
    </p>
  </div>

    <!--End mc_embed_signup-->
  <a href="https://github.com/snide/sphinx_rtd_theme">Sphinx theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a> - Last updated: Sep 29, 2020 
</footer>
        </div>
      </div>

    </section>


  </div>
  


  

    <script type="text/javascript">
        var DOCUMENTATION_OPTIONS = {
            URL_ROOT:'../',
            VERSION:'',
            COLLAPSE_INDEX:false,
            FILE_SUFFIX:'.html',
            HAS_SOURCE:  true
        };
    </script>
      <script type="text/javascript" src="../_static/jquery.js"></script>
      <script type="text/javascript" src="../_static/underscore.js"></script>
      <script type="text/javascript" src="../_static/doctools.js"></script>
      <script type="text/javascript" src="../_static/language_data.js"></script>

  

  
  
    <script type="text/javascript" src="../_static/js/theme.js"></script>
  

  
  
  <script type="text/javascript">
      jQuery(function () {
          SphinxRtdTheme.StickyNav.enable();
      });
  </script>
   

  <!-- Place this tag right after the last button or just before your close body tag. -->
  <script async defer id="github-bjs" src="https://buttons.github.io/buttons.js"></script>

</body>
</html>